/* Unicode case fold automaton
 * This is free and unencumbered software released into the public domain.
 */

/**
 * Begin case-folding a code point. Returns a starting state for
 * casefold_next(). A zero state means the code point simply maps to
 * itself.
 */
int casefold_start(long codepoint);

/**
 * Return the next case-folded code point, updating the state. The terminal
 * state is zero.
 */
long casefold_next(int *state);

int
casefold_start(long codepoint)
{
    static const short offlen[0x10ffff] = {
        [0x00041] = 0x1000, [0x00042] = 0x1001, [0x00043] = 0x1002,
        [0x00044] = 0x1003, [0x00045] = 0x1004, [0x00046] = 0x1005,
        [0x00047] = 0x1006, [0x00048] = 0x1007, [0x00049] = 0x1008,
        [0x0004a] = 0x1009, [0x0004b] = 0x100a, [0x0004c] = 0x100b,
        [0x0004d] = 0x100c, [0x0004e] = 0x100d, [0x0004f] = 0x100e,
        [0x00050] = 0x100f, [0x00051] = 0x1010, [0x00052] = 0x1011,
        [0x00053] = 0x1012, [0x00054] = 0x1013, [0x00055] = 0x1014,
        [0x00056] = 0x1015, [0x00057] = 0x1016, [0x00058] = 0x1017,
        [0x00059] = 0x1018, [0x0005a] = 0x1019, [0x000b5] = 0x101a,
        [0x000c0] = 0x101b, [0x000c1] = 0x101c, [0x000c2] = 0x101d,
        [0x000c3] = 0x101e, [0x000c4] = 0x101f, [0x000c5] = 0x1020,
        [0x000c6] = 0x1021, [0x000c7] = 0x1022, [0x000c8] = 0x1023,
        [0x000c9] = 0x1024, [0x000ca] = 0x1025, [0x000cb] = 0x1026,
        [0x000cc] = 0x1027, [0x000cd] = 0x1028, [0x000ce] = 0x1029,
        [0x000cf] = 0x102a, [0x000d0] = 0x102b, [0x000d1] = 0x102c,
        [0x000d2] = 0x102d, [0x000d3] = 0x102e, [0x000d4] = 0x102f,
        [0x000d5] = 0x1030, [0x000d6] = 0x1031, [0x000d8] = 0x1032,
        [0x000d9] = 0x1033, [0x000da] = 0x1034, [0x000db] = 0x1035,
        [0x000dc] = 0x1036, [0x000dd] = 0x1037, [0x000de] = 0x1038,
        [0x000df] = 0x2039, [0x00100] = 0x103b, [0x00102] = 0x103c,
        [0x00104] = 0x103d, [0x00106] = 0x103e, [0x00108] = 0x103f,
        [0x0010a] = 0x1040, [0x0010c] = 0x1041, [0x0010e] = 0x1042,
        [0x00110] = 0x1043, [0x00112] = 0x1044, [0x00114] = 0x1045,
        [0x00116] = 0x1046, [0x00118] = 0x1047, [0x0011a] = 0x1048,
        [0x0011c] = 0x1049, [0x0011e] = 0x104a, [0x00120] = 0x104b,
        [0x00122] = 0x104c, [0x00124] = 0x104d, [0x00126] = 0x104e,
        [0x00128] = 0x104f, [0x0012a] = 0x1050, [0x0012c] = 0x1051,
        [0x0012e] = 0x1052, [0x00130] = 0x2053, [0x00132] = 0x1055,
        [0x00134] = 0x1056, [0x00136] = 0x1057, [0x00139] = 0x1058,
        [0x0013b] = 0x1059, [0x0013d] = 0x105a, [0x0013f] = 0x105b,
        [0x00141] = 0x105c, [0x00143] = 0x105d, [0x00145] = 0x105e,
        [0x00147] = 0x105f, [0x00149] = 0x2060, [0x0014a] = 0x1062,
        [0x0014c] = 0x1063, [0x0014e] = 0x1064, [0x00150] = 0x1065,
        [0x00152] = 0x1066, [0x00154] = 0x1067, [0x00156] = 0x1068,
        [0x00158] = 0x1069, [0x0015a] = 0x106a, [0x0015c] = 0x106b,
        [0x0015e] = 0x106c, [0x00160] = 0x106d, [0x00162] = 0x106e,
        [0x00164] = 0x106f, [0x00166] = 0x1070, [0x00168] = 0x1071,
        [0x0016a] = 0x1072, [0x0016c] = 0x1073, [0x0016e] = 0x1074,
        [0x00170] = 0x1075, [0x00172] = 0x1076, [0x00174] = 0x1077,
        [0x00176] = 0x1078, [0x00178] = 0x1079, [0x00179] = 0x107a,
        [0x0017b] = 0x107b, [0x0017d] = 0x107c, [0x0017f] = 0x107d,
        [0x00181] = 0x107e, [0x00182] = 0x107f, [0x00184] = 0x1080,
        [0x00186] = 0x1081, [0x00187] = 0x1082, [0x00189] = 0x1083,
        [0x0018a] = 0x1084, [0x0018b] = 0x1085, [0x0018e] = 0x1086,
        [0x0018f] = 0x1087, [0x00190] = 0x1088, [0x00191] = 0x1089,
        [0x00193] = 0x108a, [0x00194] = 0x108b, [0x00196] = 0x108c,
        [0x00197] = 0x108d, [0x00198] = 0x108e, [0x0019c] = 0x108f,
        [0x0019d] = 0x1090, [0x0019f] = 0x1091, [0x001a0] = 0x1092,
        [0x001a2] = 0x1093, [0x001a4] = 0x1094, [0x001a6] = 0x1095,
        [0x001a7] = 0x1096, [0x001a9] = 0x1097, [0x001ac] = 0x1098,
        [0x001ae] = 0x1099, [0x001af] = 0x109a, [0x001b1] = 0x109b,
        [0x001b2] = 0x109c, [0x001b3] = 0x109d, [0x001b5] = 0x109e,
        [0x001b7] = 0x109f, [0x001b8] = 0x10a0, [0x001bc] = 0x10a1,
        [0x001c4] = 0x10a2, [0x001c5] = 0x10a3, [0x001c7] = 0x10a4,
        [0x001c8] = 0x10a5, [0x001ca] = 0x10a6, [0x001cb] = 0x10a7,
        [0x001cd] = 0x10a8, [0x001cf] = 0x10a9, [0x001d1] = 0x10aa,
        [0x001d3] = 0x10ab, [0x001d5] = 0x10ac, [0x001d7] = 0x10ad,
        [0x001d9] = 0x10ae, [0x001db] = 0x10af, [0x001de] = 0x10b0,
        [0x001e0] = 0x10b1, [0x001e2] = 0x10b2, [0x001e4] = 0x10b3,
        [0x001e6] = 0x10b4, [0x001e8] = 0x10b5, [0x001ea] = 0x10b6,
        [0x001ec] = 0x10b7, [0x001ee] = 0x10b8, [0x001f0] = 0x20b9,
        [0x001f1] = 0x10bb, [0x001f2] = 0x10bc, [0x001f4] = 0x10bd,
        [0x001f6] = 0x10be, [0x001f7] = 0x10bf, [0x001f8] = 0x10c0,
        [0x001fa] = 0x10c1, [0x001fc] = 0x10c2, [0x001fe] = 0x10c3,
        [0x00200] = 0x10c4, [0x00202] = 0x10c5, [0x00204] = 0x10c6,
        [0x00206] = 0x10c7, [0x00208] = 0x10c8, [0x0020a] = 0x10c9,
        [0x0020c] = 0x10ca, [0x0020e] = 0x10cb, [0x00210] = 0x10cc,
        [0x00212] = 0x10cd, [0x00214] = 0x10ce, [0x00216] = 0x10cf,
        [0x00218] = 0x10d0, [0x0021a] = 0x10d1, [0x0021c] = 0x10d2,
        [0x0021e] = 0x10d3, [0x00220] = 0x10d4, [0x00222] = 0x10d5,
        [0x00224] = 0x10d6, [0x00226] = 0x10d7, [0x00228] = 0x10d8,
        [0x0022a] = 0x10d9, [0x0022c] = 0x10da, [0x0022e] = 0x10db,
        [0x00230] = 0x10dc, [0x00232] = 0x10dd, [0x0023a] = 0x10de,
        [0x0023b] = 0x10df, [0x0023d] = 0x10e0, [0x0023e] = 0x10e1,
        [0x00241] = 0x10e2, [0x00243] = 0x10e3, [0x00244] = 0x10e4,
        [0x00245] = 0x10e5, [0x00246] = 0x10e6, [0x00248] = 0x10e7,
        [0x0024a] = 0x10e8, [0x0024c] = 0x10e9, [0x0024e] = 0x10ea,
        [0x00345] = 0x10eb, [0x00370] = 0x10ec, [0x00372] = 0x10ed,
        [0x00376] = 0x10ee, [0x0037f] = 0x10ef, [0x00386] = 0x10f0,
        [0x00388] = 0x10f1, [0x00389] = 0x10f2, [0x0038a] = 0x10f3,
        [0x0038c] = 0x10f4, [0x0038e] = 0x10f5, [0x0038f] = 0x10f6,
        [0x00390] = 0x30f7, [0x00391] = 0x10fa, [0x00392] = 0x10fb,
        [0x00393] = 0x10fc, [0x00394] = 0x10fd, [0x00395] = 0x10fe,
        [0x00396] = 0x10ff, [0x00397] = 0x1100, [0x00398] = 0x1101,
        [0x00399] = 0x1102, [0x0039a] = 0x1103, [0x0039b] = 0x1104,
        [0x0039c] = 0x1105, [0x0039d] = 0x1106, [0x0039e] = 0x1107,
        [0x0039f] = 0x1108, [0x003a0] = 0x1109, [0x003a1] = 0x110a,
        [0x003a3] = 0x110b, [0x003a4] = 0x110c, [0x003a5] = 0x110d,
        [0x003a6] = 0x110e, [0x003a7] = 0x110f, [0x003a8] = 0x1110,
        [0x003a9] = 0x1111, [0x003aa] = 0x1112, [0x003ab] = 0x1113,
        [0x003b0] = 0x3114, [0x003c2] = 0x1117, [0x003cf] = 0x1118,
        [0x003d0] = 0x1119, [0x003d1] = 0x111a, [0x003d5] = 0x111b,
        [0x003d6] = 0x111c, [0x003d8] = 0x111d, [0x003da] = 0x111e,
        [0x003dc] = 0x111f, [0x003de] = 0x1120, [0x003e0] = 0x1121,
        [0x003e2] = 0x1122, [0x003e4] = 0x1123, [0x003e6] = 0x1124,
        [0x003e8] = 0x1125, [0x003ea] = 0x1126, [0x003ec] = 0x1127,
        [0x003ee] = 0x1128, [0x003f0] = 0x1129, [0x003f1] = 0x112a,
        [0x003f4] = 0x112b, [0x003f5] = 0x112c, [0x003f7] = 0x112d,
        [0x003f9] = 0x112e, [0x003fa] = 0x112f, [0x003fd] = 0x1130,
        [0x003fe] = 0x1131, [0x003ff] = 0x1132, [0x00400] = 0x1133,
        [0x00401] = 0x1134, [0x00402] = 0x1135, [0x00403] = 0x1136,
        [0x00404] = 0x1137, [0x00405] = 0x1138, [0x00406] = 0x1139,
        [0x00407] = 0x113a, [0x00408] = 0x113b, [0x00409] = 0x113c,
        [0x0040a] = 0x113d, [0x0040b] = 0x113e, [0x0040c] = 0x113f,
        [0x0040d] = 0x1140, [0x0040e] = 0x1141, [0x0040f] = 0x1142,
        [0x00410] = 0x1143, [0x00411] = 0x1144, [0x00412] = 0x1145,
        [0x00413] = 0x1146, [0x00414] = 0x1147, [0x00415] = 0x1148,
        [0x00416] = 0x1149, [0x00417] = 0x114a, [0x00418] = 0x114b,
        [0x00419] = 0x114c, [0x0041a] = 0x114d, [0x0041b] = 0x114e,
        [0x0041c] = 0x114f, [0x0041d] = 0x1150, [0x0041e] = 0x1151,
        [0x0041f] = 0x1152, [0x00420] = 0x1153, [0x00421] = 0x1154,
        [0x00422] = 0x1155, [0x00423] = 0x1156, [0x00424] = 0x1157,
        [0x00425] = 0x1158, [0x00426] = 0x1159, [0x00427] = 0x115a,
        [0x00428] = 0x115b, [0x00429] = 0x115c, [0x0042a] = 0x115d,
        [0x0042b] = 0x115e, [0x0042c] = 0x115f, [0x0042d] = 0x1160,
        [0x0042e] = 0x1161, [0x0042f] = 0x1162, [0x00460] = 0x1163,
        [0x00462] = 0x1164, [0x00464] = 0x1165, [0x00466] = 0x1166,
        [0x00468] = 0x1167, [0x0046a] = 0x1168, [0x0046c] = 0x1169,
        [0x0046e] = 0x116a, [0x00470] = 0x116b, [0x00472] = 0x116c,
        [0x00474] = 0x116d, [0x00476] = 0x116e, [0x00478] = 0x116f,
        [0x0047a] = 0x1170, [0x0047c] = 0x1171, [0x0047e] = 0x1172,
        [0x00480] = 0x1173, [0x0048a] = 0x1174, [0x0048c] = 0x1175,
        [0x0048e] = 0x1176, [0x00490] = 0x1177, [0x00492] = 0x1178,
        [0x00494] = 0x1179, [0x00496] = 0x117a, [0x00498] = 0x117b,
        [0x0049a] = 0x117c, [0x0049c] = 0x117d, [0x0049e] = 0x117e,
        [0x004a0] = 0x117f, [0x004a2] = 0x1180, [0x004a4] = 0x1181,
        [0x004a6] = 0x1182, [0x004a8] = 0x1183, [0x004aa] = 0x1184,
        [0x004ac] = 0x1185, [0x004ae] = 0x1186, [0x004b0] = 0x1187,
        [0x004b2] = 0x1188, [0x004b4] = 0x1189, [0x004b6] = 0x118a,
        [0x004b8] = 0x118b, [0x004ba] = 0x118c, [0x004bc] = 0x118d,
        [0x004be] = 0x118e, [0x004c0] = 0x118f, [0x004c1] = 0x1190,
        [0x004c3] = 0x1191, [0x004c5] = 0x1192, [0x004c7] = 0x1193,
        [0x004c9] = 0x1194, [0x004cb] = 0x1195, [0x004cd] = 0x1196,
        [0x004d0] = 0x1197, [0x004d2] = 0x1198, [0x004d4] = 0x1199,
        [0x004d6] = 0x119a, [0x004d8] = 0x119b, [0x004da] = 0x119c,
        [0x004dc] = 0x119d, [0x004de] = 0x119e, [0x004e0] = 0x119f,
        [0x004e2] = 0x11a0, [0x004e4] = 0x11a1, [0x004e6] = 0x11a2,
        [0x004e8] = 0x11a3, [0x004ea] = 0x11a4, [0x004ec] = 0x11a5,
        [0x004ee] = 0x11a6, [0x004f0] = 0x11a7, [0x004f2] = 0x11a8,
        [0x004f4] = 0x11a9, [0x004f6] = 0x11aa, [0x004f8] = 0x11ab,
        [0x004fa] = 0x11ac, [0x004fc] = 0x11ad, [0x004fe] = 0x11ae,
        [0x00500] = 0x11af, [0x00502] = 0x11b0, [0x00504] = 0x11b1,
        [0x00506] = 0x11b2, [0x00508] = 0x11b3, [0x0050a] = 0x11b4,
        [0x0050c] = 0x11b5, [0x0050e] = 0x11b6, [0x00510] = 0x11b7,
        [0x00512] = 0x11b8, [0x00514] = 0x11b9, [0x00516] = 0x11ba,
        [0x00518] = 0x11bb, [0x0051a] = 0x11bc, [0x0051c] = 0x11bd,
        [0x0051e] = 0x11be, [0x00520] = 0x11bf, [0x00522] = 0x11c0,
        [0x00524] = 0x11c1, [0x00526] = 0x11c2, [0x00528] = 0x11c3,
        [0x0052a] = 0x11c4, [0x0052c] = 0x11c5, [0x0052e] = 0x11c6,
        [0x00531] = 0x11c7, [0x00532] = 0x11c8, [0x00533] = 0x11c9,
        [0x00534] = 0x11ca, [0x00535] = 0x11cb, [0x00536] = 0x11cc,
        [0x00537] = 0x11cd, [0x00538] = 0x11ce, [0x00539] = 0x11cf,
        [0x0053a] = 0x11d0, [0x0053b] = 0x11d1, [0x0053c] = 0x11d2,
        [0x0053d] = 0x11d3, [0x0053e] = 0x11d4, [0x0053f] = 0x11d5,
        [0x00540] = 0x11d6, [0x00541] = 0x11d7, [0x00542] = 0x11d8,
        [0x00543] = 0x11d9, [0x00544] = 0x11da, [0x00545] = 0x11db,
        [0x00546] = 0x11dc, [0x00547] = 0x11dd, [0x00548] = 0x11de,
        [0x00549] = 0x11df, [0x0054a] = 0x11e0, [0x0054b] = 0x11e1,
        [0x0054c] = 0x11e2, [0x0054d] = 0x11e3, [0x0054e] = 0x11e4,
        [0x0054f] = 0x11e5, [0x00550] = 0x11e6, [0x00551] = 0x11e7,
        [0x00552] = 0x11e8, [0x00553] = 0x11e9, [0x00554] = 0x11ea,
        [0x00555] = 0x11eb, [0x00556] = 0x11ec, [0x00587] = 0x21ed,
        [0x010a0] = 0x11ef, [0x010a1] = 0x11f0, [0x010a2] = 0x11f1,
        [0x010a3] = 0x11f2, [0x010a4] = 0x11f3, [0x010a5] = 0x11f4,
        [0x010a6] = 0x11f5, [0x010a7] = 0x11f6, [0x010a8] = 0x11f7,
        [0x010a9] = 0x11f8, [0x010aa] = 0x11f9, [0x010ab] = 0x11fa,
        [0x010ac] = 0x11fb, [0x010ad] = 0x11fc, [0x010ae] = 0x11fd,
        [0x010af] = 0x11fe, [0x010b0] = 0x11ff, [0x010b1] = 0x1200,
        [0x010b2] = 0x1201, [0x010b3] = 0x1202, [0x010b4] = 0x1203,
        [0x010b5] = 0x1204, [0x010b6] = 0x1205, [0x010b7] = 0x1206,
        [0x010b8] = 0x1207, [0x010b9] = 0x1208, [0x010ba] = 0x1209,
        [0x010bb] = 0x120a, [0x010bc] = 0x120b, [0x010bd] = 0x120c,
        [0x010be] = 0x120d, [0x010bf] = 0x120e, [0x010c0] = 0x120f,
        [0x010c1] = 0x1210, [0x010c2] = 0x1211, [0x010c3] = 0x1212,
        [0x010c4] = 0x1213, [0x010c5] = 0x1214, [0x010c7] = 0x1215,
        [0x010cd] = 0x1216, [0x013f8] = 0x1217, [0x013f9] = 0x1218,
        [0x013fa] = 0x1219, [0x013fb] = 0x121a, [0x013fc] = 0x121b,
        [0x013fd] = 0x121c, [0x01c80] = 0x121d, [0x01c81] = 0x121e,
        [0x01c82] = 0x121f, [0x01c83] = 0x1220, [0x01c84] = 0x1221,
        [0x01c85] = 0x1222, [0x01c86] = 0x1223, [0x01c87] = 0x1224,
        [0x01c88] = 0x1225, [0x01c90] = 0x1226, [0x01c91] = 0x1227,
        [0x01c92] = 0x1228, [0x01c93] = 0x1229, [0x01c94] = 0x122a,
        [0x01c95] = 0x122b, [0x01c96] = 0x122c, [0x01c97] = 0x122d,
        [0x01c98] = 0x122e, [0x01c99] = 0x122f, [0x01c9a] = 0x1230,
        [0x01c9b] = 0x1231, [0x01c9c] = 0x1232, [0x01c9d] = 0x1233,
        [0x01c9e] = 0x1234, [0x01c9f] = 0x1235, [0x01ca0] = 0x1236,
        [0x01ca1] = 0x1237, [0x01ca2] = 0x1238, [0x01ca3] = 0x1239,
        [0x01ca4] = 0x123a, [0x01ca5] = 0x123b, [0x01ca6] = 0x123c,
        [0x01ca7] = 0x123d, [0x01ca8] = 0x123e, [0x01ca9] = 0x123f,
        [0x01caa] = 0x1240, [0x01cab] = 0x1241, [0x01cac] = 0x1242,
        [0x01cad] = 0x1243, [0x01cae] = 0x1244, [0x01caf] = 0x1245,
        [0x01cb0] = 0x1246, [0x01cb1] = 0x1247, [0x01cb2] = 0x1248,
        [0x01cb3] = 0x1249, [0x01cb4] = 0x124a, [0x01cb5] = 0x124b,
        [0x01cb6] = 0x124c, [0x01cb7] = 0x124d, [0x01cb8] = 0x124e,
        [0x01cb9] = 0x124f, [0x01cba] = 0x1250, [0x01cbd] = 0x1251,
        [0x01cbe] = 0x1252, [0x01cbf] = 0x1253, [0x01e00] = 0x1254,
        [0x01e02] = 0x1255, [0x01e04] = 0x1256, [0x01e06] = 0x1257,
        [0x01e08] = 0x1258, [0x01e0a] = 0x1259, [0x01e0c] = 0x125a,
        [0x01e0e] = 0x125b, [0x01e10] = 0x125c, [0x01e12] = 0x125d,
        [0x01e14] = 0x125e, [0x01e16] = 0x125f, [0x01e18] = 0x1260,
        [0x01e1a] = 0x1261, [0x01e1c] = 0x1262, [0x01e1e] = 0x1263,
        [0x01e20] = 0x1264, [0x01e22] = 0x1265, [0x01e24] = 0x1266,
        [0x01e26] = 0x1267, [0x01e28] = 0x1268, [0x01e2a] = 0x1269,
        [0x01e2c] = 0x126a, [0x01e2e] = 0x126b, [0x01e30] = 0x126c,
        [0x01e32] = 0x126d, [0x01e34] = 0x126e, [0x01e36] = 0x126f,
        [0x01e38] = 0x1270, [0x01e3a] = 0x1271, [0x01e3c] = 0x1272,
        [0x01e3e] = 0x1273, [0x01e40] = 0x1274, [0x01e42] = 0x1275,
        [0x01e44] = 0x1276, [0x01e46] = 0x1277, [0x01e48] = 0x1278,
        [0x01e4a] = 0x1279, [0x01e4c] = 0x127a, [0x01e4e] = 0x127b,
        [0x01e50] = 0x127c, [0x01e52] = 0x127d, [0x01e54] = 0x127e,
        [0x01e56] = 0x127f, [0x01e58] = 0x1280, [0x01e5a] = 0x1281,
        [0x01e5c] = 0x1282, [0x01e5e] = 0x1283, [0x01e60] = 0x1284,
        [0x01e62] = 0x1285, [0x01e64] = 0x1286, [0x01e66] = 0x1287,
        [0x01e68] = 0x1288, [0x01e6a] = 0x1289, [0x01e6c] = 0x128a,
        [0x01e6e] = 0x128b, [0x01e70] = 0x128c, [0x01e72] = 0x128d,
        [0x01e74] = 0x128e, [0x01e76] = 0x128f, [0x01e78] = 0x1290,
        [0x01e7a] = 0x1291, [0x01e7c] = 0x1292, [0x01e7e] = 0x1293,
        [0x01e80] = 0x1294, [0x01e82] = 0x1295, [0x01e84] = 0x1296,
        [0x01e86] = 0x1297, [0x01e88] = 0x1298, [0x01e8a] = 0x1299,
        [0x01e8c] = 0x129a, [0x01e8e] = 0x129b, [0x01e90] = 0x129c,
        [0x01e92] = 0x129d, [0x01e94] = 0x129e, [0x01e96] = 0x229f,
        [0x01e97] = 0x22a1, [0x01e98] = 0x22a3, [0x01e99] = 0x22a5,
        [0x01e9a] = 0x22a7, [0x01e9b] = 0x12a9, [0x01e9e] = 0x22aa,
        [0x01ea0] = 0x12ac, [0x01ea2] = 0x12ad, [0x01ea4] = 0x12ae,
        [0x01ea6] = 0x12af, [0x01ea8] = 0x12b0, [0x01eaa] = 0x12b1,
        [0x01eac] = 0x12b2, [0x01eae] = 0x12b3, [0x01eb0] = 0x12b4,
        [0x01eb2] = 0x12b5, [0x01eb4] = 0x12b6, [0x01eb6] = 0x12b7,
        [0x01eb8] = 0x12b8, [0x01eba] = 0x12b9, [0x01ebc] = 0x12ba,
        [0x01ebe] = 0x12bb, [0x01ec0] = 0x12bc, [0x01ec2] = 0x12bd,
        [0x01ec4] = 0x12be, [0x01ec6] = 0x12bf, [0x01ec8] = 0x12c0,
        [0x01eca] = 0x12c1, [0x01ecc] = 0x12c2, [0x01ece] = 0x12c3,
        [0x01ed0] = 0x12c4, [0x01ed2] = 0x12c5, [0x01ed4] = 0x12c6,
        [0x01ed6] = 0x12c7, [0x01ed8] = 0x12c8, [0x01eda] = 0x12c9,
        [0x01edc] = 0x12ca, [0x01ede] = 0x12cb, [0x01ee0] = 0x12cc,
        [0x01ee2] = 0x12cd, [0x01ee4] = 0x12ce, [0x01ee6] = 0x12cf,
        [0x01ee8] = 0x12d0, [0x01eea] = 0x12d1, [0x01eec] = 0x12d2,
        [0x01eee] = 0x12d3, [0x01ef0] = 0x12d4, [0x01ef2] = 0x12d5,
        [0x01ef4] = 0x12d6, [0x01ef6] = 0x12d7, [0x01ef8] = 0x12d8,
        [0x01efa] = 0x12d9, [0x01efc] = 0x12da, [0x01efe] = 0x12db,
        [0x01f08] = 0x12dc, [0x01f09] = 0x12dd, [0x01f0a] = 0x12de,
        [0x01f0b] = 0x12df, [0x01f0c] = 0x12e0, [0x01f0d] = 0x12e1,
        [0x01f0e] = 0x12e2, [0x01f0f] = 0x12e3, [0x01f18] = 0x12e4,
        [0x01f19] = 0x12e5, [0x01f1a] = 0x12e6, [0x01f1b] = 0x12e7,
        [0x01f1c] = 0x12e8, [0x01f1d] = 0x12e9, [0x01f28] = 0x12ea,
        [0x01f29] = 0x12eb, [0x01f2a] = 0x12ec, [0x01f2b] = 0x12ed,
        [0x01f2c] = 0x12ee, [0x01f2d] = 0x12ef, [0x01f2e] = 0x12f0,
        [0x01f2f] = 0x12f1, [0x01f38] = 0x12f2, [0x01f39] = 0x12f3,
        [0x01f3a] = 0x12f4, [0x01f3b] = 0x12f5, [0x01f3c] = 0x12f6,
        [0x01f3d] = 0x12f7, [0x01f3e] = 0x12f8, [0x01f3f] = 0x12f9,
        [0x01f48] = 0x12fa, [0x01f49] = 0x12fb, [0x01f4a] = 0x12fc,
        [0x01f4b] = 0x12fd, [0x01f4c] = 0x12fe, [0x01f4d] = 0x12ff,
        [0x01f50] = 0x2300, [0x01f52] = 0x3302, [0x01f54] = 0x3305,
        [0x01f56] = 0x3308, [0x01f59] = 0x130b, [0x01f5b] = 0x130c,
        [0x01f5d] = 0x130d, [0x01f5f] = 0x130e, [0x01f68] = 0x130f,
        [0x01f69] = 0x1310, [0x01f6a] = 0x1311, [0x01f6b] = 0x1312,
        [0x01f6c] = 0x1313, [0x01f6d] = 0x1314, [0x01f6e] = 0x1315,
        [0x01f6f] = 0x1316, [0x01f80] = 0x2317, [0x01f81] = 0x2319,
        [0x01f82] = 0x231b, [0x01f83] = 0x231d, [0x01f84] = 0x231f,
        [0x01f85] = 0x2321, [0x01f86] = 0x2323, [0x01f87] = 0x2325,
        [0x01f88] = 0x2327, [0x01f89] = 0x2329, [0x01f8a] = 0x232b,
        [0x01f8b] = 0x232d, [0x01f8c] = 0x232f, [0x01f8d] = 0x2331,
        [0x01f8e] = 0x2333, [0x01f8f] = 0x2335, [0x01f90] = 0x2337,
        [0x01f91] = 0x2339, [0x01f92] = 0x233b, [0x01f93] = 0x233d,
        [0x01f94] = 0x233f, [0x01f95] = 0x2341, [0x01f96] = 0x2343,
        [0x01f97] = 0x2345, [0x01f98] = 0x2347, [0x01f99] = 0x2349,
        [0x01f9a] = 0x234b, [0x01f9b] = 0x234d, [0x01f9c] = 0x234f,
        [0x01f9d] = 0x2351, [0x01f9e] = 0x2353, [0x01f9f] = 0x2355,
        [0x01fa0] = 0x2357, [0x01fa1] = 0x2359, [0x01fa2] = 0x235b,
        [0x01fa3] = 0x235d, [0x01fa4] = 0x235f, [0x01fa5] = 0x2361,
        [0x01fa6] = 0x2363, [0x01fa7] = 0x2365, [0x01fa8] = 0x2367,
        [0x01fa9] = 0x2369, [0x01faa] = 0x236b, [0x01fab] = 0x236d,
        [0x01fac] = 0x236f, [0x01fad] = 0x2371, [0x01fae] = 0x2373,
        [0x01faf] = 0x2375, [0x01fb2] = 0x2377, [0x01fb3] = 0x2379,
        [0x01fb4] = 0x237b, [0x01fb6] = 0x237d, [0x01fb7] = 0x337f,
        [0x01fb8] = 0x1382, [0x01fb9] = 0x1383, [0x01fba] = 0x1384,
        [0x01fbb] = 0x1385, [0x01fbc] = 0x2386, [0x01fbe] = 0x1388,
        [0x01fc2] = 0x2389, [0x01fc3] = 0x238b, [0x01fc4] = 0x238d,
        [0x01fc6] = 0x238f, [0x01fc7] = 0x3391, [0x01fc8] = 0x1394,
        [0x01fc9] = 0x1395, [0x01fca] = 0x1396, [0x01fcb] = 0x1397,
        [0x01fcc] = 0x2398, [0x01fd2] = 0x339a, [0x01fd3] = 0x339d,
        [0x01fd6] = 0x23a0, [0x01fd7] = 0x33a2, [0x01fd8] = 0x13a5,
        [0x01fd9] = 0x13a6, [0x01fda] = 0x13a7, [0x01fdb] = 0x13a8,
        [0x01fe2] = 0x33a9, [0x01fe3] = 0x33ac, [0x01fe4] = 0x23af,
        [0x01fe6] = 0x23b1, [0x01fe7] = 0x33b3, [0x01fe8] = 0x13b6,
        [0x01fe9] = 0x13b7, [0x01fea] = 0x13b8, [0x01feb] = 0x13b9,
        [0x01fec] = 0x13ba, [0x01ff2] = 0x23bb, [0x01ff3] = 0x23bd,
        [0x01ff4] = 0x23bf, [0x01ff6] = 0x23c1, [0x01ff7] = 0x33c3,
        [0x01ff8] = 0x13c6, [0x01ff9] = 0x13c7, [0x01ffa] = 0x13c8,
        [0x01ffb] = 0x13c9, [0x01ffc] = 0x23ca, [0x02126] = 0x13cc,
        [0x0212a] = 0x13cd, [0x0212b] = 0x13ce, [0x02132] = 0x13cf,
        [0x02160] = 0x13d0, [0x02161] = 0x13d1, [0x02162] = 0x13d2,
        [0x02163] = 0x13d3, [0x02164] = 0x13d4, [0x02165] = 0x13d5,
        [0x02166] = 0x13d6, [0x02167] = 0x13d7, [0x02168] = 0x13d8,
        [0x02169] = 0x13d9, [0x0216a] = 0x13da, [0x0216b] = 0x13db,
        [0x0216c] = 0x13dc, [0x0216d] = 0x13dd, [0x0216e] = 0x13de,
        [0x0216f] = 0x13df, [0x02183] = 0x13e0, [0x024b6] = 0x13e1,
        [0x024b7] = 0x13e2, [0x024b8] = 0x13e3, [0x024b9] = 0x13e4,
        [0x024ba] = 0x13e5, [0x024bb] = 0x13e6, [0x024bc] = 0x13e7,
        [0x024bd] = 0x13e8, [0x024be] = 0x13e9, [0x024bf] = 0x13ea,
        [0x024c0] = 0x13eb, [0x024c1] = 0x13ec, [0x024c2] = 0x13ed,
        [0x024c3] = 0x13ee, [0x024c4] = 0x13ef, [0x024c5] = 0x13f0,
        [0x024c6] = 0x13f1, [0x024c7] = 0x13f2, [0x024c8] = 0x13f3,
        [0x024c9] = 0x13f4, [0x024ca] = 0x13f5, [0x024cb] = 0x13f6,
        [0x024cc] = 0x13f7, [0x024cd] = 0x13f8, [0x024ce] = 0x13f9,
        [0x024cf] = 0x13fa, [0x02c00] = 0x13fb, [0x02c01] = 0x13fc,
        [0x02c02] = 0x13fd, [0x02c03] = 0x13fe, [0x02c04] = 0x13ff,
        [0x02c05] = 0x1400, [0x02c06] = 0x1401, [0x02c07] = 0x1402,
        [0x02c08] = 0x1403, [0x02c09] = 0x1404, [0x02c0a] = 0x1405,
        [0x02c0b] = 0x1406, [0x02c0c] = 0x1407, [0x02c0d] = 0x1408,
        [0x02c0e] = 0x1409, [0x02c0f] = 0x140a, [0x02c10] = 0x140b,
        [0x02c11] = 0x140c, [0x02c12] = 0x140d, [0x02c13] = 0x140e,
        [0x02c14] = 0x140f, [0x02c15] = 0x1410, [0x02c16] = 0x1411,
        [0x02c17] = 0x1412, [0x02c18] = 0x1413, [0x02c19] = 0x1414,
        [0x02c1a] = 0x1415, [0x02c1b] = 0x1416, [0x02c1c] = 0x1417,
        [0x02c1d] = 0x1418, [0x02c1e] = 0x1419, [0x02c1f] = 0x141a,
        [0x02c20] = 0x141b, [0x02c21] = 0x141c, [0x02c22] = 0x141d,
        [0x02c23] = 0x141e, [0x02c24] = 0x141f, [0x02c25] = 0x1420,
        [0x02c26] = 0x1421, [0x02c27] = 0x1422, [0x02c28] = 0x1423,
        [0x02c29] = 0x1424, [0x02c2a] = 0x1425, [0x02c2b] = 0x1426,
        [0x02c2c] = 0x1427, [0x02c2d] = 0x1428, [0x02c2e] = 0x1429,
        [0x02c60] = 0x142a, [0x02c62] = 0x142b, [0x02c63] = 0x142c,
        [0x02c64] = 0x142d, [0x02c67] = 0x142e, [0x02c69] = 0x142f,
        [0x02c6b] = 0x1430, [0x02c6d] = 0x1431, [0x02c6e] = 0x1432,
        [0x02c6f] = 0x1433, [0x02c70] = 0x1434, [0x02c72] = 0x1435,
        [0x02c75] = 0x1436, [0x02c7e] = 0x1437, [0x02c7f] = 0x1438,
        [0x02c80] = 0x1439, [0x02c82] = 0x143a, [0x02c84] = 0x143b,
        [0x02c86] = 0x143c, [0x02c88] = 0x143d, [0x02c8a] = 0x143e,
        [0x02c8c] = 0x143f, [0x02c8e] = 0x1440, [0x02c90] = 0x1441,
        [0x02c92] = 0x1442, [0x02c94] = 0x1443, [0x02c96] = 0x1444,
        [0x02c98] = 0x1445, [0x02c9a] = 0x1446, [0x02c9c] = 0x1447,
        [0x02c9e] = 0x1448, [0x02ca0] = 0x1449, [0x02ca2] = 0x144a,
        [0x02ca4] = 0x144b, [0x02ca6] = 0x144c, [0x02ca8] = 0x144d,
        [0x02caa] = 0x144e, [0x02cac] = 0x144f, [0x02cae] = 0x1450,
        [0x02cb0] = 0x1451, [0x02cb2] = 0x1452, [0x02cb4] = 0x1453,
        [0x02cb6] = 0x1454, [0x02cb8] = 0x1455, [0x02cba] = 0x1456,
        [0x02cbc] = 0x1457, [0x02cbe] = 0x1458, [0x02cc0] = 0x1459,
        [0x02cc2] = 0x145a, [0x02cc4] = 0x145b, [0x02cc6] = 0x145c,
        [0x02cc8] = 0x145d, [0x02cca] = 0x145e, [0x02ccc] = 0x145f,
        [0x02cce] = 0x1460, [0x02cd0] = 0x1461, [0x02cd2] = 0x1462,
        [0x02cd4] = 0x1463, [0x02cd6] = 0x1464, [0x02cd8] = 0x1465,
        [0x02cda] = 0x1466, [0x02cdc] = 0x1467, [0x02cde] = 0x1468,
        [0x02ce0] = 0x1469, [0x02ce2] = 0x146a, [0x02ceb] = 0x146b,
        [0x02ced] = 0x146c, [0x02cf2] = 0x146d, [0x0a640] = 0x146e,
        [0x0a642] = 0x146f, [0x0a644] = 0x1470, [0x0a646] = 0x1471,
        [0x0a648] = 0x1472, [0x0a64a] = 0x1473, [0x0a64c] = 0x1474,
        [0x0a64e] = 0x1475, [0x0a650] = 0x1476, [0x0a652] = 0x1477,
        [0x0a654] = 0x1478, [0x0a656] = 0x1479, [0x0a658] = 0x147a,
        [0x0a65a] = 0x147b, [0x0a65c] = 0x147c, [0x0a65e] = 0x147d,
        [0x0a660] = 0x147e, [0x0a662] = 0x147f, [0x0a664] = 0x1480,
        [0x0a666] = 0x1481, [0x0a668] = 0x1482, [0x0a66a] = 0x1483,
        [0x0a66c] = 0x1484, [0x0a680] = 0x1485, [0x0a682] = 0x1486,
        [0x0a684] = 0x1487, [0x0a686] = 0x1488, [0x0a688] = 0x1489,
        [0x0a68a] = 0x148a, [0x0a68c] = 0x148b, [0x0a68e] = 0x148c,
        [0x0a690] = 0x148d, [0x0a692] = 0x148e, [0x0a694] = 0x148f,
        [0x0a696] = 0x1490, [0x0a698] = 0x1491, [0x0a69a] = 0x1492,
        [0x0a722] = 0x1493, [0x0a724] = 0x1494, [0x0a726] = 0x1495,
        [0x0a728] = 0x1496, [0x0a72a] = 0x1497, [0x0a72c] = 0x1498,
        [0x0a72e] = 0x1499, [0x0a732] = 0x149a, [0x0a734] = 0x149b,
        [0x0a736] = 0x149c, [0x0a738] = 0x149d, [0x0a73a] = 0x149e,
        [0x0a73c] = 0x149f, [0x0a73e] = 0x14a0, [0x0a740] = 0x14a1,
        [0x0a742] = 0x14a2, [0x0a744] = 0x14a3, [0x0a746] = 0x14a4,
        [0x0a748] = 0x14a5, [0x0a74a] = 0x14a6, [0x0a74c] = 0x14a7,
        [0x0a74e] = 0x14a8, [0x0a750] = 0x14a9, [0x0a752] = 0x14aa,
        [0x0a754] = 0x14ab, [0x0a756] = 0x14ac, [0x0a758] = 0x14ad,
        [0x0a75a] = 0x14ae, [0x0a75c] = 0x14af, [0x0a75e] = 0x14b0,
        [0x0a760] = 0x14b1, [0x0a762] = 0x14b2, [0x0a764] = 0x14b3,
        [0x0a766] = 0x14b4, [0x0a768] = 0x14b5, [0x0a76a] = 0x14b6,
        [0x0a76c] = 0x14b7, [0x0a76e] = 0x14b8, [0x0a779] = 0x14b9,
        [0x0a77b] = 0x14ba, [0x0a77d] = 0x14bb, [0x0a77e] = 0x14bc,
        [0x0a780] = 0x14bd, [0x0a782] = 0x14be, [0x0a784] = 0x14bf,
        [0x0a786] = 0x14c0, [0x0a78b] = 0x14c1, [0x0a78d] = 0x14c2,
        [0x0a790] = 0x14c3, [0x0a792] = 0x14c4, [0x0a796] = 0x14c5,
        [0x0a798] = 0x14c6, [0x0a79a] = 0x14c7, [0x0a79c] = 0x14c8,
        [0x0a79e] = 0x14c9, [0x0a7a0] = 0x14ca, [0x0a7a2] = 0x14cb,
        [0x0a7a4] = 0x14cc, [0x0a7a6] = 0x14cd, [0x0a7a8] = 0x14ce,
        [0x0a7aa] = 0x14cf, [0x0a7ab] = 0x14d0, [0x0a7ac] = 0x14d1,
        [0x0a7ad] = 0x14d2, [0x0a7ae] = 0x14d3, [0x0a7b0] = 0x14d4,
        [0x0a7b1] = 0x14d5, [0x0a7b2] = 0x14d6, [0x0a7b3] = 0x14d7,
        [0x0a7b4] = 0x14d8, [0x0a7b6] = 0x14d9, [0x0a7b8] = 0x14da,
        [0x0a7ba] = 0x14db, [0x0a7bc] = 0x14dc, [0x0a7be] = 0x14dd,
        [0x0a7c2] = 0x14de, [0x0a7c4] = 0x14df, [0x0a7c5] = 0x14e0,
        [0x0a7c6] = 0x14e1, [0x0a7c7] = 0x14e2, [0x0a7c9] = 0x14e3,
        [0x0a7f5] = 0x14e4, [0x0ab70] = 0x14e5, [0x0ab71] = 0x14e6,
        [0x0ab72] = 0x14e7, [0x0ab73] = 0x14e8, [0x0ab74] = 0x14e9,
        [0x0ab75] = 0x14ea, [0x0ab76] = 0x14eb, [0x0ab77] = 0x14ec,
        [0x0ab78] = 0x14ed, [0x0ab79] = 0x14ee, [0x0ab7a] = 0x14ef,
        [0x0ab7b] = 0x14f0, [0x0ab7c] = 0x14f1, [0x0ab7d] = 0x14f2,
        [0x0ab7e] = 0x14f3, [0x0ab7f] = 0x14f4, [0x0ab80] = 0x14f5,
        [0x0ab81] = 0x14f6, [0x0ab82] = 0x14f7, [0x0ab83] = 0x14f8,
        [0x0ab84] = 0x14f9, [0x0ab85] = 0x14fa, [0x0ab86] = 0x14fb,
        [0x0ab87] = 0x14fc, [0x0ab88] = 0x14fd, [0x0ab89] = 0x14fe,
        [0x0ab8a] = 0x14ff, [0x0ab8b] = 0x1500, [0x0ab8c] = 0x1501,
        [0x0ab8d] = 0x1502, [0x0ab8e] = 0x1503, [0x0ab8f] = 0x1504,
        [0x0ab90] = 0x1505, [0x0ab91] = 0x1506, [0x0ab92] = 0x1507,
        [0x0ab93] = 0x1508, [0x0ab94] = 0x1509, [0x0ab95] = 0x150a,
        [0x0ab96] = 0x150b, [0x0ab97] = 0x150c, [0x0ab98] = 0x150d,
        [0x0ab99] = 0x150e, [0x0ab9a] = 0x150f, [0x0ab9b] = 0x1510,
        [0x0ab9c] = 0x1511, [0x0ab9d] = 0x1512, [0x0ab9e] = 0x1513,
        [0x0ab9f] = 0x1514, [0x0aba0] = 0x1515, [0x0aba1] = 0x1516,
        [0x0aba2] = 0x1517, [0x0aba3] = 0x1518, [0x0aba4] = 0x1519,
        [0x0aba5] = 0x151a, [0x0aba6] = 0x151b, [0x0aba7] = 0x151c,
        [0x0aba8] = 0x151d, [0x0aba9] = 0x151e, [0x0abaa] = 0x151f,
        [0x0abab] = 0x1520, [0x0abac] = 0x1521, [0x0abad] = 0x1522,
        [0x0abae] = 0x1523, [0x0abaf] = 0x1524, [0x0abb0] = 0x1525,
        [0x0abb1] = 0x1526, [0x0abb2] = 0x1527, [0x0abb3] = 0x1528,
        [0x0abb4] = 0x1529, [0x0abb5] = 0x152a, [0x0abb6] = 0x152b,
        [0x0abb7] = 0x152c, [0x0abb8] = 0x152d, [0x0abb9] = 0x152e,
        [0x0abba] = 0x152f, [0x0abbb] = 0x1530, [0x0abbc] = 0x1531,
        [0x0abbd] = 0x1532, [0x0abbe] = 0x1533, [0x0abbf] = 0x1534,
        [0x0fb00] = 0x2535, [0x0fb01] = 0x2537, [0x0fb02] = 0x2539,
        [0x0fb03] = 0x353b, [0x0fb04] = 0x353e, [0x0fb05] = 0x2541,
        [0x0fb06] = 0x2543, [0x0fb13] = 0x2545, [0x0fb14] = 0x2547,
        [0x0fb15] = 0x2549, [0x0fb16] = 0x254b, [0x0fb17] = 0x254d,
        [0x0ff21] = 0x154f, [0x0ff22] = 0x1550, [0x0ff23] = 0x1551,
        [0x0ff24] = 0x1552, [0x0ff25] = 0x1553, [0x0ff26] = 0x1554,
        [0x0ff27] = 0x1555, [0x0ff28] = 0x1556, [0x0ff29] = 0x1557,
        [0x0ff2a] = 0x1558, [0x0ff2b] = 0x1559, [0x0ff2c] = 0x155a,
        [0x0ff2d] = 0x155b, [0x0ff2e] = 0x155c, [0x0ff2f] = 0x155d,
        [0x0ff30] = 0x155e, [0x0ff31] = 0x155f, [0x0ff32] = 0x1560,
        [0x0ff33] = 0x1561, [0x0ff34] = 0x1562, [0x0ff35] = 0x1563,
        [0x0ff36] = 0x1564, [0x0ff37] = 0x1565, [0x0ff38] = 0x1566,
        [0x0ff39] = 0x1567, [0x0ff3a] = 0x1568, [0x10400] = 0x1569,
        [0x10401] = 0x156a, [0x10402] = 0x156b, [0x10403] = 0x156c,
        [0x10404] = 0x156d, [0x10405] = 0x156e, [0x10406] = 0x156f,
        [0x10407] = 0x1570, [0x10408] = 0x1571, [0x10409] = 0x1572,
        [0x1040a] = 0x1573, [0x1040b] = 0x1574, [0x1040c] = 0x1575,
        [0x1040d] = 0x1576, [0x1040e] = 0x1577, [0x1040f] = 0x1578,
        [0x10410] = 0x1579, [0x10411] = 0x157a, [0x10412] = 0x157b,
        [0x10413] = 0x157c, [0x10414] = 0x157d, [0x10415] = 0x157e,
        [0x10416] = 0x157f, [0x10417] = 0x1580, [0x10418] = 0x1581,
        [0x10419] = 0x1582, [0x1041a] = 0x1583, [0x1041b] = 0x1584,
        [0x1041c] = 0x1585, [0x1041d] = 0x1586, [0x1041e] = 0x1587,
        [0x1041f] = 0x1588, [0x10420] = 0x1589, [0x10421] = 0x158a,
        [0x10422] = 0x158b, [0x10423] = 0x158c, [0x10424] = 0x158d,
        [0x10425] = 0x158e, [0x10426] = 0x158f, [0x10427] = 0x1590,
        [0x104b0] = 0x1591, [0x104b1] = 0x1592, [0x104b2] = 0x1593,
        [0x104b3] = 0x1594, [0x104b4] = 0x1595, [0x104b5] = 0x1596,
        [0x104b6] = 0x1597, [0x104b7] = 0x1598, [0x104b8] = 0x1599,
        [0x104b9] = 0x159a, [0x104ba] = 0x159b, [0x104bb] = 0x159c,
        [0x104bc] = 0x159d, [0x104bd] = 0x159e, [0x104be] = 0x159f,
        [0x104bf] = 0x15a0, [0x104c0] = 0x15a1, [0x104c1] = 0x15a2,
        [0x104c2] = 0x15a3, [0x104c3] = 0x15a4, [0x104c4] = 0x15a5,
        [0x104c5] = 0x15a6, [0x104c6] = 0x15a7, [0x104c7] = 0x15a8,
        [0x104c8] = 0x15a9, [0x104c9] = 0x15aa, [0x104ca] = 0x15ab,
        [0x104cb] = 0x15ac, [0x104cc] = 0x15ad, [0x104cd] = 0x15ae,
        [0x104ce] = 0x15af, [0x104cf] = 0x15b0, [0x104d0] = 0x15b1,
        [0x104d1] = 0x15b2, [0x104d2] = 0x15b3, [0x104d3] = 0x15b4,
        [0x10c80] = 0x15b5, [0x10c81] = 0x15b6, [0x10c82] = 0x15b7,
        [0x10c83] = 0x15b8, [0x10c84] = 0x15b9, [0x10c85] = 0x15ba,
        [0x10c86] = 0x15bb, [0x10c87] = 0x15bc, [0x10c88] = 0x15bd,
        [0x10c89] = 0x15be, [0x10c8a] = 0x15bf, [0x10c8b] = 0x15c0,
        [0x10c8c] = 0x15c1, [0x10c8d] = 0x15c2, [0x10c8e] = 0x15c3,
        [0x10c8f] = 0x15c4, [0x10c90] = 0x15c5, [0x10c91] = 0x15c6,
        [0x10c92] = 0x15c7, [0x10c93] = 0x15c8, [0x10c94] = 0x15c9,
        [0x10c95] = 0x15ca, [0x10c96] = 0x15cb, [0x10c97] = 0x15cc,
        [0x10c98] = 0x15cd, [0x10c99] = 0x15ce, [0x10c9a] = 0x15cf,
        [0x10c9b] = 0x15d0, [0x10c9c] = 0x15d1, [0x10c9d] = 0x15d2,
        [0x10c9e] = 0x15d3, [0x10c9f] = 0x15d4, [0x10ca0] = 0x15d5,
        [0x10ca1] = 0x15d6, [0x10ca2] = 0x15d7, [0x10ca3] = 0x15d8,
        [0x10ca4] = 0x15d9, [0x10ca5] = 0x15da, [0x10ca6] = 0x15db,
        [0x10ca7] = 0x15dc, [0x10ca8] = 0x15dd, [0x10ca9] = 0x15de,
        [0x10caa] = 0x15df, [0x10cab] = 0x15e0, [0x10cac] = 0x15e1,
        [0x10cad] = 0x15e2, [0x10cae] = 0x15e3, [0x10caf] = 0x15e4,
        [0x10cb0] = 0x15e5, [0x10cb1] = 0x15e6, [0x10cb2] = 0x15e7,
        [0x118a0] = 0x15e8, [0x118a1] = 0x15e9, [0x118a2] = 0x15ea,
        [0x118a3] = 0x15eb, [0x118a4] = 0x15ec, [0x118a5] = 0x15ed,
        [0x118a6] = 0x15ee, [0x118a7] = 0x15ef, [0x118a8] = 0x15f0,
        [0x118a9] = 0x15f1, [0x118aa] = 0x15f2, [0x118ab] = 0x15f3,
        [0x118ac] = 0x15f4, [0x118ad] = 0x15f5, [0x118ae] = 0x15f6,
        [0x118af] = 0x15f7, [0x118b0] = 0x15f8, [0x118b1] = 0x15f9,
        [0x118b2] = 0x15fa, [0x118b3] = 0x15fb, [0x118b4] = 0x15fc,
        [0x118b5] = 0x15fd, [0x118b6] = 0x15fe, [0x118b7] = 0x15ff,
        [0x118b8] = 0x1600, [0x118b9] = 0x1601, [0x118ba] = 0x1602,
        [0x118bb] = 0x1603, [0x118bc] = 0x1604, [0x118bd] = 0x1605,
        [0x118be] = 0x1606, [0x118bf] = 0x1607, [0x16e40] = 0x1608,
        [0x16e41] = 0x1609, [0x16e42] = 0x160a, [0x16e43] = 0x160b,
        [0x16e44] = 0x160c, [0x16e45] = 0x160d, [0x16e46] = 0x160e,
        [0x16e47] = 0x160f, [0x16e48] = 0x1610, [0x16e49] = 0x1611,
        [0x16e4a] = 0x1612, [0x16e4b] = 0x1613, [0x16e4c] = 0x1614,
        [0x16e4d] = 0x1615, [0x16e4e] = 0x1616, [0x16e4f] = 0x1617,
        [0x16e50] = 0x1618, [0x16e51] = 0x1619, [0x16e52] = 0x161a,
        [0x16e53] = 0x161b, [0x16e54] = 0x161c, [0x16e55] = 0x161d,
        [0x16e56] = 0x161e, [0x16e57] = 0x161f, [0x16e58] = 0x1620,
        [0x16e59] = 0x1621, [0x16e5a] = 0x1622, [0x16e5b] = 0x1623,
        [0x16e5c] = 0x1624, [0x16e5d] = 0x1625, [0x16e5e] = 0x1626,
        [0x16e5f] = 0x1627, [0x1e900] = 0x1628, [0x1e901] = 0x1629,
        [0x1e902] = 0x162a, [0x1e903] = 0x162b, [0x1e904] = 0x162c,
        [0x1e905] = 0x162d, [0x1e906] = 0x162e, [0x1e907] = 0x162f,
        [0x1e908] = 0x1630, [0x1e909] = 0x1631, [0x1e90a] = 0x1632,
        [0x1e90b] = 0x1633, [0x1e90c] = 0x1634, [0x1e90d] = 0x1635,
        [0x1e90e] = 0x1636, [0x1e90f] = 0x1637, [0x1e910] = 0x1638,
        [0x1e911] = 0x1639, [0x1e912] = 0x163a, [0x1e913] = 0x163b,
        [0x1e914] = 0x163c, [0x1e915] = 0x163d, [0x1e916] = 0x163e,
        [0x1e917] = 0x163f, [0x1e918] = 0x1640, [0x1e919] = 0x1641,
        [0x1e91a] = 0x1642, [0x1e91b] = 0x1643, [0x1e91c] = 0x1644,
        [0x1e91d] = 0x1645, [0x1e91e] = 0x1646, [0x1e91f] = 0x1647,
        [0x1e920] = 0x1648, [0x1e921] = 0x1649,
    };
    return offlen[codepoint];
}

long
casefold_next(int *state)
{
    static const long mapping[] = {
        0x00061, 0x00062, 0x00063, 0x00064, 0x00065, 0x00066, 0x00067,
        0x00068, 0x00069, 0x0006a, 0x0006b, 0x0006c, 0x0006d, 0x0006e,
        0x0006f, 0x00070, 0x00071, 0x00072, 0x00073, 0x00074, 0x00075,
        0x00076, 0x00077, 0x00078, 0x00079, 0x0007a, 0x003bc, 0x000e0,
        0x000e1, 0x000e2, 0x000e3, 0x000e4, 0x000e5, 0x000e6, 0x000e7,
        0x000e8, 0x000e9, 0x000ea, 0x000eb, 0x000ec, 0x000ed, 0x000ee,
        0x000ef, 0x000f0, 0x000f1, 0x000f2, 0x000f3, 0x000f4, 0x000f5,
        0x000f6, 0x000f8, 0x000f9, 0x000fa, 0x000fb, 0x000fc, 0x000fd,
        0x000fe, 0x00073, 0x00073, 0x00101, 0x00103, 0x00105, 0x00107,
        0x00109, 0x0010b, 0x0010d, 0x0010f, 0x00111, 0x00113, 0x00115,
        0x00117, 0x00119, 0x0011b, 0x0011d, 0x0011f, 0x00121, 0x00123,
        0x00125, 0x00127, 0x00129, 0x0012b, 0x0012d, 0x0012f, 0x00069,
        0x00307, 0x00133, 0x00135, 0x00137, 0x0013a, 0x0013c, 0x0013e,
        0x00140, 0x00142, 0x00144, 0x00146, 0x00148, 0x002bc, 0x0006e,
        0x0014b, 0x0014d, 0x0014f, 0x00151, 0x00153, 0x00155, 0x00157,
        0x00159, 0x0015b, 0x0015d, 0x0015f, 0x00161, 0x00163, 0x00165,
        0x00167, 0x00169, 0x0016b, 0x0016d, 0x0016f, 0x00171, 0x00173,
        0x00175, 0x00177, 0x000ff, 0x0017a, 0x0017c, 0x0017e, 0x00073,
        0x00253, 0x00183, 0x00185, 0x00254, 0x00188, 0x00256, 0x00257,
        0x0018c, 0x001dd, 0x00259, 0x0025b, 0x00192, 0x00260, 0x00263,
        0x00269, 0x00268, 0x00199, 0x0026f, 0x00272, 0x00275, 0x001a1,
        0x001a3, 0x001a5, 0x00280, 0x001a8, 0x00283, 0x001ad, 0x00288,
        0x001b0, 0x0028a, 0x0028b, 0x001b4, 0x001b6, 0x00292, 0x001b9,
        0x001bd, 0x001c6, 0x001c6, 0x001c9, 0x001c9, 0x001cc, 0x001cc,
        0x001ce, 0x001d0, 0x001d2, 0x001d4, 0x001d6, 0x001d8, 0x001da,
        0x001dc, 0x001df, 0x001e1, 0x001e3, 0x001e5, 0x001e7, 0x001e9,
        0x001eb, 0x001ed, 0x001ef, 0x0006a, 0x0030c, 0x001f3, 0x001f3,
        0x001f5, 0x00195, 0x001bf, 0x001f9, 0x001fb, 0x001fd, 0x001ff,
        0x00201, 0x00203, 0x00205, 0x00207, 0x00209, 0x0020b, 0x0020d,
        0x0020f, 0x00211, 0x00213, 0x00215, 0x00217, 0x00219, 0x0021b,
        0x0021d, 0x0021f, 0x0019e, 0x00223, 0x00225, 0x00227, 0x00229,
        0x0022b, 0x0022d, 0x0022f, 0x00231, 0x00233, 0x02c65, 0x0023c,
        0x0019a, 0x02c66, 0x00242, 0x00180, 0x00289, 0x0028c, 0x00247,
        0x00249, 0x0024b, 0x0024d, 0x0024f, 0x003b9, 0x00371, 0x00373,
        0x00377, 0x003f3, 0x003ac, 0x003ad, 0x003ae, 0x003af, 0x003cc,
        0x003cd, 0x003ce, 0x003b9, 0x00308, 0x00301, 0x003b1, 0x003b2,
        0x003b3, 0x003b4, 0x003b5, 0x003b6, 0x003b7, 0x003b8, 0x003b9,
        0x003ba, 0x003bb, 0x003bc, 0x003bd, 0x003be, 0x003bf, 0x003c0,
        0x003c1, 0x003c3, 0x003c4, 0x003c5, 0x003c6, 0x003c7, 0x003c8,
        0x003c9, 0x003ca, 0x003cb, 0x003c5, 0x00308, 0x00301, 0x003c3,
        0x003d7, 0x003b2, 0x003b8, 0x003c6, 0x003c0, 0x003d9, 0x003db,
        0x003dd, 0x003df, 0x003e1, 0x003e3, 0x003e5, 0x003e7, 0x003e9,
        0x003eb, 0x003ed, 0x003ef, 0x003ba, 0x003c1, 0x003b8, 0x003b5,
        0x003f8, 0x003f2, 0x003fb, 0x0037b, 0x0037c, 0x0037d, 0x00450,
        0x00451, 0x00452, 0x00453, 0x00454, 0x00455, 0x00456, 0x00457,
        0x00458, 0x00459, 0x0045a, 0x0045b, 0x0045c, 0x0045d, 0x0045e,
        0x0045f, 0x00430, 0x00431, 0x00432, 0x00433, 0x00434, 0x00435,
        0x00436, 0x00437, 0x00438, 0x00439, 0x0043a, 0x0043b, 0x0043c,
        0x0043d, 0x0043e, 0x0043f, 0x00440, 0x00441, 0x00442, 0x00443,
        0x00444, 0x00445, 0x00446, 0x00447, 0x00448, 0x00449, 0x0044a,
        0x0044b, 0x0044c, 0x0044d, 0x0044e, 0x0044f, 0x00461, 0x00463,
        0x00465, 0x00467, 0x00469, 0x0046b, 0x0046d, 0x0046f, 0x00471,
        0x00473, 0x00475, 0x00477, 0x00479, 0x0047b, 0x0047d, 0x0047f,
        0x00481, 0x0048b, 0x0048d, 0x0048f, 0x00491, 0x00493, 0x00495,
        0x00497, 0x00499, 0x0049b, 0x0049d, 0x0049f, 0x004a1, 0x004a3,
        0x004a5, 0x004a7, 0x004a9, 0x004ab, 0x004ad, 0x004af, 0x004b1,
        0x004b3, 0x004b5, 0x004b7, 0x004b9, 0x004bb, 0x004bd, 0x004bf,
        0x004cf, 0x004c2, 0x004c4, 0x004c6, 0x004c8, 0x004ca, 0x004cc,
        0x004ce, 0x004d1, 0x004d3, 0x004d5, 0x004d7, 0x004d9, 0x004db,
        0x004dd, 0x004df, 0x004e1, 0x004e3, 0x004e5, 0x004e7, 0x004e9,
        0x004eb, 0x004ed, 0x004ef, 0x004f1, 0x004f3, 0x004f5, 0x004f7,
        0x004f9, 0x004fb, 0x004fd, 0x004ff, 0x00501, 0x00503, 0x00505,
        0x00507, 0x00509, 0x0050b, 0x0050d, 0x0050f, 0x00511, 0x00513,
        0x00515, 0x00517, 0x00519, 0x0051b, 0x0051d, 0x0051f, 0x00521,
        0x00523, 0x00525, 0x00527, 0x00529, 0x0052b, 0x0052d, 0x0052f,
        0x00561, 0x00562, 0x00563, 0x00564, 0x00565, 0x00566, 0x00567,
        0x00568, 0x00569, 0x0056a, 0x0056b, 0x0056c, 0x0056d, 0x0056e,
        0x0056f, 0x00570, 0x00571, 0x00572, 0x00573, 0x00574, 0x00575,
        0x00576, 0x00577, 0x00578, 0x00579, 0x0057a, 0x0057b, 0x0057c,
        0x0057d, 0x0057e, 0x0057f, 0x00580, 0x00581, 0x00582, 0x00583,
        0x00584, 0x00585, 0x00586, 0x00565, 0x00582, 0x02d00, 0x02d01,
        0x02d02, 0x02d03, 0x02d04, 0x02d05, 0x02d06, 0x02d07, 0x02d08,
        0x02d09, 0x02d0a, 0x02d0b, 0x02d0c, 0x02d0d, 0x02d0e, 0x02d0f,
        0x02d10, 0x02d11, 0x02d12, 0x02d13, 0x02d14, 0x02d15, 0x02d16,
        0x02d17, 0x02d18, 0x02d19, 0x02d1a, 0x02d1b, 0x02d1c, 0x02d1d,
        0x02d1e, 0x02d1f, 0x02d20, 0x02d21, 0x02d22, 0x02d23, 0x02d24,
        0x02d25, 0x02d27, 0x02d2d, 0x013f0, 0x013f1, 0x013f2, 0x013f3,
        0x013f4, 0x013f5, 0x00432, 0x00434, 0x0043e, 0x00441, 0x00442,
        0x00442, 0x0044a, 0x00463, 0x0a64b, 0x010d0, 0x010d1, 0x010d2,
        0x010d3, 0x010d4, 0x010d5, 0x010d6, 0x010d7, 0x010d8, 0x010d9,
        0x010da, 0x010db, 0x010dc, 0x010dd, 0x010de, 0x010df, 0x010e0,
        0x010e1, 0x010e2, 0x010e3, 0x010e4, 0x010e5, 0x010e6, 0x010e7,
        0x010e8, 0x010e9, 0x010ea, 0x010eb, 0x010ec, 0x010ed, 0x010ee,
        0x010ef, 0x010f0, 0x010f1, 0x010f2, 0x010f3, 0x010f4, 0x010f5,
        0x010f6, 0x010f7, 0x010f8, 0x010f9, 0x010fa, 0x010fd, 0x010fe,
        0x010ff, 0x01e01, 0x01e03, 0x01e05, 0x01e07, 0x01e09, 0x01e0b,
        0x01e0d, 0x01e0f, 0x01e11, 0x01e13, 0x01e15, 0x01e17, 0x01e19,
        0x01e1b, 0x01e1d, 0x01e1f, 0x01e21, 0x01e23, 0x01e25, 0x01e27,
        0x01e29, 0x01e2b, 0x01e2d, 0x01e2f, 0x01e31, 0x01e33, 0x01e35,
        0x01e37, 0x01e39, 0x01e3b, 0x01e3d, 0x01e3f, 0x01e41, 0x01e43,
        0x01e45, 0x01e47, 0x01e49, 0x01e4b, 0x01e4d, 0x01e4f, 0x01e51,
        0x01e53, 0x01e55, 0x01e57, 0x01e59, 0x01e5b, 0x01e5d, 0x01e5f,
        0x01e61, 0x01e63, 0x01e65, 0x01e67, 0x01e69, 0x01e6b, 0x01e6d,
        0x01e6f, 0x01e71, 0x01e73, 0x01e75, 0x01e77, 0x01e79, 0x01e7b,
        0x01e7d, 0x01e7f, 0x01e81, 0x01e83, 0x01e85, 0x01e87, 0x01e89,
        0x01e8b, 0x01e8d, 0x01e8f, 0x01e91, 0x01e93, 0x01e95, 0x00068,
        0x00331, 0x00074, 0x00308, 0x00077, 0x0030a, 0x00079, 0x0030a,
        0x00061, 0x002be, 0x01e61, 0x00073, 0x00073, 0x01ea1, 0x01ea3,
        0x01ea5, 0x01ea7, 0x01ea9, 0x01eab, 0x01ead, 0x01eaf, 0x01eb1,
        0x01eb3, 0x01eb5, 0x01eb7, 0x01eb9, 0x01ebb, 0x01ebd, 0x01ebf,
        0x01ec1, 0x01ec3, 0x01ec5, 0x01ec7, 0x01ec9, 0x01ecb, 0x01ecd,
        0x01ecf, 0x01ed1, 0x01ed3, 0x01ed5, 0x01ed7, 0x01ed9, 0x01edb,
        0x01edd, 0x01edf, 0x01ee1, 0x01ee3, 0x01ee5, 0x01ee7, 0x01ee9,
        0x01eeb, 0x01eed, 0x01eef, 0x01ef1, 0x01ef3, 0x01ef5, 0x01ef7,
        0x01ef9, 0x01efb, 0x01efd, 0x01eff, 0x01f00, 0x01f01, 0x01f02,
        0x01f03, 0x01f04, 0x01f05, 0x01f06, 0x01f07, 0x01f10, 0x01f11,
        0x01f12, 0x01f13, 0x01f14, 0x01f15, 0x01f20, 0x01f21, 0x01f22,
        0x01f23, 0x01f24, 0x01f25, 0x01f26, 0x01f27, 0x01f30, 0x01f31,
        0x01f32, 0x01f33, 0x01f34, 0x01f35, 0x01f36, 0x01f37, 0x01f40,
        0x01f41, 0x01f42, 0x01f43, 0x01f44, 0x01f45, 0x003c5, 0x00313,
        0x003c5, 0x00313, 0x00300, 0x003c5, 0x00313, 0x00301, 0x003c5,
        0x00313, 0x00342, 0x01f51, 0x01f53, 0x01f55, 0x01f57, 0x01f60,
        0x01f61, 0x01f62, 0x01f63, 0x01f64, 0x01f65, 0x01f66, 0x01f67,
        0x01f00, 0x003b9, 0x01f01, 0x003b9, 0x01f02, 0x003b9, 0x01f03,
        0x003b9, 0x01f04, 0x003b9, 0x01f05, 0x003b9, 0x01f06, 0x003b9,
        0x01f07, 0x003b9, 0x01f00, 0x003b9, 0x01f01, 0x003b9, 0x01f02,
        0x003b9, 0x01f03, 0x003b9, 0x01f04, 0x003b9, 0x01f05, 0x003b9,
        0x01f06, 0x003b9, 0x01f07, 0x003b9, 0x01f20, 0x003b9, 0x01f21,
        0x003b9, 0x01f22, 0x003b9, 0x01f23, 0x003b9, 0x01f24, 0x003b9,
        0x01f25, 0x003b9, 0x01f26, 0x003b9, 0x01f27, 0x003b9, 0x01f20,
        0x003b9, 0x01f21, 0x003b9, 0x01f22, 0x003b9, 0x01f23, 0x003b9,
        0x01f24, 0x003b9, 0x01f25, 0x003b9, 0x01f26, 0x003b9, 0x01f27,
        0x003b9, 0x01f60, 0x003b9, 0x01f61, 0x003b9, 0x01f62, 0x003b9,
        0x01f63, 0x003b9, 0x01f64, 0x003b9, 0x01f65, 0x003b9, 0x01f66,
        0x003b9, 0x01f67, 0x003b9, 0x01f60, 0x003b9, 0x01f61, 0x003b9,
        0x01f62, 0x003b9, 0x01f63, 0x003b9, 0x01f64, 0x003b9, 0x01f65,
        0x003b9, 0x01f66, 0x003b9, 0x01f67, 0x003b9, 0x01f70, 0x003b9,
        0x003b1, 0x003b9, 0x003ac, 0x003b9, 0x003b1, 0x00342, 0x003b1,
        0x00342, 0x003b9, 0x01fb0, 0x01fb1, 0x01f70, 0x01f71, 0x003b1,
        0x003b9, 0x003b9, 0x01f74, 0x003b9, 0x003b7, 0x003b9, 0x003ae,
        0x003b9, 0x003b7, 0x00342, 0x003b7, 0x00342, 0x003b9, 0x01f72,
        0x01f73, 0x01f74, 0x01f75, 0x003b7, 0x003b9, 0x003b9, 0x00308,
        0x00300, 0x003b9, 0x00308, 0x00301, 0x003b9, 0x00342, 0x003b9,
        0x00308, 0x00342, 0x01fd0, 0x01fd1, 0x01f76, 0x01f77, 0x003c5,
        0x00308, 0x00300, 0x003c5, 0x00308, 0x00301, 0x003c1, 0x00313,
        0x003c5, 0x00342, 0x003c5, 0x00308, 0x00342, 0x01fe0, 0x01fe1,
        0x01f7a, 0x01f7b, 0x01fe5, 0x01f7c, 0x003b9, 0x003c9, 0x003b9,
        0x003ce, 0x003b9, 0x003c9, 0x00342, 0x003c9, 0x00342, 0x003b9,
        0x01f78, 0x01f79, 0x01f7c, 0x01f7d, 0x003c9, 0x003b9, 0x003c9,
        0x0006b, 0x000e5, 0x0214e, 0x02170, 0x02171, 0x02172, 0x02173,
        0x02174, 0x02175, 0x02176, 0x02177, 0x02178, 0x02179, 0x0217a,
        0x0217b, 0x0217c, 0x0217d, 0x0217e, 0x0217f, 0x02184, 0x024d0,
        0x024d1, 0x024d2, 0x024d3, 0x024d4, 0x024d5, 0x024d6, 0x024d7,
        0x024d8, 0x024d9, 0x024da, 0x024db, 0x024dc, 0x024dd, 0x024de,
        0x024df, 0x024e0, 0x024e1, 0x024e2, 0x024e3, 0x024e4, 0x024e5,
        0x024e6, 0x024e7, 0x024e8, 0x024e9, 0x02c30, 0x02c31, 0x02c32,
        0x02c33, 0x02c34, 0x02c35, 0x02c36, 0x02c37, 0x02c38, 0x02c39,
        0x02c3a, 0x02c3b, 0x02c3c, 0x02c3d, 0x02c3e, 0x02c3f, 0x02c40,
        0x02c41, 0x02c42, 0x02c43, 0x02c44, 0x02c45, 0x02c46, 0x02c47,
        0x02c48, 0x02c49, 0x02c4a, 0x02c4b, 0x02c4c, 0x02c4d, 0x02c4e,
        0x02c4f, 0x02c50, 0x02c51, 0x02c52, 0x02c53, 0x02c54, 0x02c55,
        0x02c56, 0x02c57, 0x02c58, 0x02c59, 0x02c5a, 0x02c5b, 0x02c5c,
        0x02c5d, 0x02c5e, 0x02c61, 0x0026b, 0x01d7d, 0x0027d, 0x02c68,
        0x02c6a, 0x02c6c, 0x00251, 0x00271, 0x00250, 0x00252, 0x02c73,
        0x02c76, 0x0023f, 0x00240, 0x02c81, 0x02c83, 0x02c85, 0x02c87,
        0x02c89, 0x02c8b, 0x02c8d, 0x02c8f, 0x02c91, 0x02c93, 0x02c95,
        0x02c97, 0x02c99, 0x02c9b, 0x02c9d, 0x02c9f, 0x02ca1, 0x02ca3,
        0x02ca5, 0x02ca7, 0x02ca9, 0x02cab, 0x02cad, 0x02caf, 0x02cb1,
        0x02cb3, 0x02cb5, 0x02cb7, 0x02cb9, 0x02cbb, 0x02cbd, 0x02cbf,
        0x02cc1, 0x02cc3, 0x02cc5, 0x02cc7, 0x02cc9, 0x02ccb, 0x02ccd,
        0x02ccf, 0x02cd1, 0x02cd3, 0x02cd5, 0x02cd7, 0x02cd9, 0x02cdb,
        0x02cdd, 0x02cdf, 0x02ce1, 0x02ce3, 0x02cec, 0x02cee, 0x02cf3,
        0x0a641, 0x0a643, 0x0a645, 0x0a647, 0x0a649, 0x0a64b, 0x0a64d,
        0x0a64f, 0x0a651, 0x0a653, 0x0a655, 0x0a657, 0x0a659, 0x0a65b,
        0x0a65d, 0x0a65f, 0x0a661, 0x0a663, 0x0a665, 0x0a667, 0x0a669,
        0x0a66b, 0x0a66d, 0x0a681, 0x0a683, 0x0a685, 0x0a687, 0x0a689,
        0x0a68b, 0x0a68d, 0x0a68f, 0x0a691, 0x0a693, 0x0a695, 0x0a697,
        0x0a699, 0x0a69b, 0x0a723, 0x0a725, 0x0a727, 0x0a729, 0x0a72b,
        0x0a72d, 0x0a72f, 0x0a733, 0x0a735, 0x0a737, 0x0a739, 0x0a73b,
        0x0a73d, 0x0a73f, 0x0a741, 0x0a743, 0x0a745, 0x0a747, 0x0a749,
        0x0a74b, 0x0a74d, 0x0a74f, 0x0a751, 0x0a753, 0x0a755, 0x0a757,
        0x0a759, 0x0a75b, 0x0a75d, 0x0a75f, 0x0a761, 0x0a763, 0x0a765,
        0x0a767, 0x0a769, 0x0a76b, 0x0a76d, 0x0a76f, 0x0a77a, 0x0a77c,
        0x01d79, 0x0a77f, 0x0a781, 0x0a783, 0x0a785, 0x0a787, 0x0a78c,
        0x00265, 0x0a791, 0x0a793, 0x0a797, 0x0a799, 0x0a79b, 0x0a79d,
        0x0a79f, 0x0a7a1, 0x0a7a3, 0x0a7a5, 0x0a7a7, 0x0a7a9, 0x00266,
        0x0025c, 0x00261, 0x0026c, 0x0026a, 0x0029e, 0x00287, 0x0029d,
        0x0ab53, 0x0a7b5, 0x0a7b7, 0x0a7b9, 0x0a7bb, 0x0a7bd, 0x0a7bf,
        0x0a7c3, 0x0a794, 0x00282, 0x01d8e, 0x0a7c8, 0x0a7ca, 0x0a7f6,
        0x013a0, 0x013a1, 0x013a2, 0x013a3, 0x013a4, 0x013a5, 0x013a6,
        0x013a7, 0x013a8, 0x013a9, 0x013aa, 0x013ab, 0x013ac, 0x013ad,
        0x013ae, 0x013af, 0x013b0, 0x013b1, 0x013b2, 0x013b3, 0x013b4,
        0x013b5, 0x013b6, 0x013b7, 0x013b8, 0x013b9, 0x013ba, 0x013bb,
        0x013bc, 0x013bd, 0x013be, 0x013bf, 0x013c0, 0x013c1, 0x013c2,
        0x013c3, 0x013c4, 0x013c5, 0x013c6, 0x013c7, 0x013c8, 0x013c9,
        0x013ca, 0x013cb, 0x013cc, 0x013cd, 0x013ce, 0x013cf, 0x013d0,
        0x013d1, 0x013d2, 0x013d3, 0x013d4, 0x013d5, 0x013d6, 0x013d7,
        0x013d8, 0x013d9, 0x013da, 0x013db, 0x013dc, 0x013dd, 0x013de,
        0x013df, 0x013e0, 0x013e1, 0x013e2, 0x013e3, 0x013e4, 0x013e5,
        0x013e6, 0x013e7, 0x013e8, 0x013e9, 0x013ea, 0x013eb, 0x013ec,
        0x013ed, 0x013ee, 0x013ef, 0x00066, 0x00066, 0x00066, 0x00069,
        0x00066, 0x0006c, 0x00066, 0x00066, 0x00069, 0x00066, 0x00066,
        0x0006c, 0x00073, 0x00074, 0x00073, 0x00074, 0x00574, 0x00576,
        0x00574, 0x00565, 0x00574, 0x0056b, 0x0057e, 0x00576, 0x00574,
        0x0056d, 0x0ff41, 0x0ff42, 0x0ff43, 0x0ff44, 0x0ff45, 0x0ff46,
        0x0ff47, 0x0ff48, 0x0ff49, 0x0ff4a, 0x0ff4b, 0x0ff4c, 0x0ff4d,
        0x0ff4e, 0x0ff4f, 0x0ff50, 0x0ff51, 0x0ff52, 0x0ff53, 0x0ff54,
        0x0ff55, 0x0ff56, 0x0ff57, 0x0ff58, 0x0ff59, 0x0ff5a, 0x10428,
        0x10429, 0x1042a, 0x1042b, 0x1042c, 0x1042d, 0x1042e, 0x1042f,
        0x10430, 0x10431, 0x10432, 0x10433, 0x10434, 0x10435, 0x10436,
        0x10437, 0x10438, 0x10439, 0x1043a, 0x1043b, 0x1043c, 0x1043d,
        0x1043e, 0x1043f, 0x10440, 0x10441, 0x10442, 0x10443, 0x10444,
        0x10445, 0x10446, 0x10447, 0x10448, 0x10449, 0x1044a, 0x1044b,
        0x1044c, 0x1044d, 0x1044e, 0x1044f, 0x104d8, 0x104d9, 0x104da,
        0x104db, 0x104dc, 0x104dd, 0x104de, 0x104df, 0x104e0, 0x104e1,
        0x104e2, 0x104e3, 0x104e4, 0x104e5, 0x104e6, 0x104e7, 0x104e8,
        0x104e9, 0x104ea, 0x104eb, 0x104ec, 0x104ed, 0x104ee, 0x104ef,
        0x104f0, 0x104f1, 0x104f2, 0x104f3, 0x104f4, 0x104f5, 0x104f6,
        0x104f7, 0x104f8, 0x104f9, 0x104fa, 0x104fb, 0x10cc0, 0x10cc1,
        0x10cc2, 0x10cc3, 0x10cc4, 0x10cc5, 0x10cc6, 0x10cc7, 0x10cc8,
        0x10cc9, 0x10cca, 0x10ccb, 0x10ccc, 0x10ccd, 0x10cce, 0x10ccf,
        0x10cd0, 0x10cd1, 0x10cd2, 0x10cd3, 0x10cd4, 0x10cd5, 0x10cd6,
        0x10cd7, 0x10cd8, 0x10cd9, 0x10cda, 0x10cdb, 0x10cdc, 0x10cdd,
        0x10cde, 0x10cdf, 0x10ce0, 0x10ce1, 0x10ce2, 0x10ce3, 0x10ce4,
        0x10ce5, 0x10ce6, 0x10ce7, 0x10ce8, 0x10ce9, 0x10cea, 0x10ceb,
        0x10cec, 0x10ced, 0x10cee, 0x10cef, 0x10cf0, 0x10cf1, 0x10cf2,
        0x118c0, 0x118c1, 0x118c2, 0x118c3, 0x118c4, 0x118c5, 0x118c6,
        0x118c7, 0x118c8, 0x118c9, 0x118ca, 0x118cb, 0x118cc, 0x118cd,
        0x118ce, 0x118cf, 0x118d0, 0x118d1, 0x118d2, 0x118d3, 0x118d4,
        0x118d5, 0x118d6, 0x118d7, 0x118d8, 0x118d9, 0x118da, 0x118db,
        0x118dc, 0x118dd, 0x118de, 0x118df, 0x16e60, 0x16e61, 0x16e62,
        0x16e63, 0x16e64, 0x16e65, 0x16e66, 0x16e67, 0x16e68, 0x16e69,
        0x16e6a, 0x16e6b, 0x16e6c, 0x16e6d, 0x16e6e, 0x16e6f, 0x16e70,
        0x16e71, 0x16e72, 0x16e73, 0x16e74, 0x16e75, 0x16e76, 0x16e77,
        0x16e78, 0x16e79, 0x16e7a, 0x16e7b, 0x16e7c, 0x16e7d, 0x16e7e,
        0x16e7f, 0x1e922, 0x1e923, 0x1e924, 0x1e925, 0x1e926, 0x1e927,
        0x1e928, 0x1e929, 0x1e92a, 0x1e92b, 0x1e92c, 0x1e92d, 0x1e92e,
        0x1e92f, 0x1e930, 0x1e931, 0x1e932, 0x1e933, 0x1e934, 0x1e935,
        0x1e936, 0x1e937, 0x1e938, 0x1e939, 0x1e93a, 0x1e93b, 0x1e93c,
        0x1e93d, 0x1e93e, 0x1e93f, 0x1e940, 0x1e941, 0x1e942, 0x1e943,
    };
    int len = (*state >> 12) - 1;
    int off = *state & 0xfff;
    *state = len<<12 | (len ? off + 1 : 0);
    return mapping[off];
}

#ifdef TEST
#include <stdio.h>
#include <wchar.h>
#include <locale.h>

int
main(void)
{
    const wchar_t *str = L"Grüßen\n";

    setlocale(0, "");
    for (const wchar_t *s = str; *s; s++) {
        int state = casefold_start(*s);
        if (!state) {
            putwc(*s, stdout);
        } else {
            do {
                putwc(casefold_next(&state), stdout);
            } while (state);
        }
    }
}
#endif
